// backend/src/services/user/roleService.js

import roleMapper from "../../mappers/user/roleMapper.js";

/**
 * @description 创建角色
 * @param {Object} roleData - 角色数据
 * @returns {Promise<string|null>} 返回错误信息或 null
 */
const createRole = async (roleData) => {
    const existingRole = await roleMapper.existingRole(roleData);
    if (existingRole) {
        return '角色名已存在';
    }
    await roleMapper.createRole(roleData);
    return null;
};

/**
 * @description 获取所有角色
 * @returns {Promise<Array>} 返回角色列表
 */
const getAllRoles = async () => {
    return await roleMapper.getAllRoles();
};

/**
 * @description 通过角色 ID 获取角色
 * @param {number} roleId - 角色 ID
 * @returns {Promise<Object|null>} 返回角色信息或 null
 */
const getRoleById = async (roleId) => {
    return await roleMapper.getRoleById(roleId);
};

/**
 * @description 更新角色
 * @param {number} roleId - 角色 ID
 * @param {Object} roleData - 更新的数据
 * @returns {Promise<string|null>} 返回 null 或错误信息
 */
const updateRole = async (roleId, roleData) => {
    const role = await roleMapper.getRoleById(roleId);
    if (!role) {
        return '角色未找到';
    }
    await roleMapper.updateRole(roleId, roleData);
    return null;
};

/**
 * @description 逻辑删除角色
 * @param {Array<number>} roleIds - 角色 ID 列表
 * @returns {Promise<null>} 返回 null
 */
const deleteRole = async (roleIds) => {
    await roleMapper.deleteRole(roleIds);
    return null;
};

export default { createRole, getAllRoles, getRoleById, updateRole, deleteRole };
